#include <iostream>
#include <cmath>

using namespace std;
const int N=5*1e5+10;

int a[N];
int st[N][21];
int get_max(int l,int r)
{
	int j=log2(r-l+1);
	return max(st[l][j],st[r-(1<<j)+1][j]);
}
int main()
{
	int n,q;
	cin>>n>>q;
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	
	for(int i=1;i<=n;i++)
	{
		st[i][0]=a[i];
	}
	for(int j=1;j<=log2(n);j++)
	{
		for(int i=1;i+(1<<j)-1<=n;i++)
		{
			st[i][j]=max(st[i][j-1],st[i+(1<<(j-1))][j-1]);
		}
	}

	while(q--)
	{
		int l,r;
		scanf("%d%d",&l,&r);
		printf("%d\n",get_max(l,r));
	}
	return 0;
}
